<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>03组件几个注意事项</title>
  <script src="../js/vue.js"></script>
</head>
<body>
  <div id="app">
    <my-school></my-school>
    <student></student>
  </div>
  <div id="root">
    <student></student>
  </div>
  <script>
    /* 
      1 注册组件时的组件名
        一个单词的组件名，首字母可以小写school，也可以首字母大写School
        多个单词的组件名，可以my-school，也可以MySchool(该方式需要Vue脚手架支持)

      2 使用组件时的标签名
        一个单词的组件名，可以<school></school>，<school/>，也可以<School></School>，<School/>
        多个单词的组件名，可以<my-school></my-school>，<my-school/>，也可以<MySchool></MySchool>，<MySchool/>
        注意：<school/>，<School/>，<my-school/>自结束形式需要脚手架支持
      
      3 定义组件的简写方式
        const school = {}
        直接书写配置项，省略Vue.extend()
        本质上即使Vue.extend()被省略掉，但在注册组件时，Vue会自动调用
    */
    const school = Vue.extend({
      template: `
      <div>
        <h1>学校</h1>
        <h3>{{schoolName}}</h3>
        <h3>{{addr}}</h3>
      </div>
      `,
      data() {
        return {
          schoolName: '清华',
          addr: '北京'
        }
      }
    })
    // student并非组件名，只是一个中间变量
    const student = Vue.extend({
      template: `
      <div>
        <h1>学生</h1>
        <h3>{{studentName}}</h3>
        <h3>{{age}}</h3>
      </div>
      `,
      data() {
        return {
          studentName: 'lqj',
          age: 18
        }
      }
    })
    Vue.component('student', student)
    new Vue({
      el: '#app',
      components: {
        // 'my-school'才是组件名
        'my-school': school
      }
    })
    new Vue({
      el: '#root'
    })
  </script>
</body>
</html>